package com.qingzhuge.pay.dto.response;

import com.qingzhuge.dto.response.BaseResponsePkLongDto;
import com.qingzhuge.pay.EnumPayType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * @author : zero.xiao
 * @description : 支付配置信息
 * @date :2018/11/16 0016 下午 17:24
 * @since : 1.0.0
 * @modified :
 */
@Getter
@Setter
@ApiModel("支付配置信息")
public class SysPayPropertyResponseDto extends BaseResponsePkLongDto {
    private static final long serialVersionUID = -4476621145717956843L;
    @ApiModelProperty("名称")
    private String name;
    @ApiModelProperty("系统默认")
    private Boolean enable;
    @ApiModelProperty("类型")
    private EnumPayType type;
    @ApiModelProperty("微信公众号或者小程序等的appid")
    private String appId;
    @ApiModelProperty("微信支付商户号")
    private String mchId;
    @ApiModelProperty("微信支付商户密钥")
    private String mchKey;
    /**服务商模式下的子商户公众账号ID，普通模式请不要配置，请在配置文件中将对应项删除*/
    @ApiModelProperty("服务商模式下的子商户公众账号ID，普通模式请不要配置")
    private String subAppId;

    /**服务商模式下的子商户号，普通模式请不要配置，最好是请在配置文件中将对应项删除*/
    @ApiModelProperty("服务商模式下的子商户号，普通模式请不要配置")
    private String subMchId;

    /**apiclient_cert.p12文件的绝对路径，或者如果放在项目中，请以classpath:开头指定*/
    @ApiModelProperty("cert.p12文件的绝对路径")
    private String keyPath;
    /**
     * p12证书文件内容的字节数组.
     */
    @ApiModelProperty("p12证书文件内容的字节数组")
    private byte[] keyContent;
    /**
     * 微信支付异步回调地址，通知url必须为直接可访问的url，不能携带参数.
     */
    @ApiModelProperty("微信支付异步回调地址，通知url必须为直接可访问的url，不能携带参数")
    private String notifyUrl;
    /**
     * 微信退款异步回调地址，通知url必须为直接可访问的url，不能携带参数.
     */
    @ApiModelProperty("微信退款异步回调地址，通知url必须为直接可访问的url，不能携带参数")
    private String refundNotifyUrl;
    /**
     * 交易类型.
     * <pre>
     * JSAPI--公众号支付
     * NATIVE--原生扫码支付
     * APP--app支付
     * </pre>
     */
    @ApiModelProperty("交易类型:JSAPI--公众号支付,NATIVE--原生扫码支付,APP--app支付")
    private String tradeType;
    /**
     * <pre>
     * 签名类型.
     * sign_type
     * 否
     * String(32)
     * HMAC-SHA256
     * 签名类型，目前支持HMAC-SHA256和MD5
     * </pre>
     */
    @ApiModelProperty("签名类型:支持HMAC-SHA256和MD5")
    private String signType;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this,
                ToStringStyle.MULTI_LINE_STYLE);
    }
}